﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Misuzilla.Net.Irc;

namespace Misuzilla.Crigate.Handler
{
    public interface IMessagePreHandler<TIrcMessage> where TIrcMessage : IrcMessage
    {
        Boolean OnPreMessageReceived(TIrcMessage ircMessage);
    }

    public interface IMessageHandler<TIrcMessage> where TIrcMessage : IrcMessage
    {
        Boolean OnMessageReceived(TIrcMessage ircMessage);
    }

    public interface IMessagePostHandler<TIrcMessage> where TIrcMessage : IrcMessage
    {
        Boolean OnPostMessageReceived(TIrcMessage ircMessage);
    }
    public interface IMessagePreHandler : IMessagePreHandler<IrcMessage> { }
    public interface IMessageHandler : IMessageHandler<IrcMessage> { }
    public interface IMessagePostHandler : IMessagePostHandler<IrcMessage> { }


    public interface IMessagePreSendHandler<TIrcMessage> where TIrcMessage : IrcMessage
    {
        Boolean OnPreMessageSend(TIrcMessage ircMessage);
    }

    public interface IMessagePostSendHandler<TIrcMessage> where TIrcMessage : IrcMessage
    {
        Boolean OnPostMessageSend(TIrcMessage ircMessage);
    }

    public interface IMessagePreSendHandler : IMessagePreSendHandler<IrcMessage> { }
    public interface IMessagePostSendHandler : IMessagePostSendHandler<IrcMessage> { }
}
